<?php

require_once 'classes/historique.php';
require_once 'SC/SCanimal.php';
require_once 'SC/SCcause.php';
require_once 'SC/SCpersonne.php';
require_once 'SC/SClocalite.php';



/**
 * Service fonctionnel permettant de gérer les données des historiques
 *
 * @author Zikrija
 */
class SFhistorique {
    
    /**
     *  Méthode permettant d'ajouter un nouvel historique
     * @param Historique $historique
     * @return Historique un historique ajouté
     */
    public function ajouter(Historique $historique){
        $unHistoriqueMemorise      = null;
        
        
        $SChistorique = new SChistorique();
        $SCanimal = new SCanimal();
        $SCcause = new SCcause();
        $SCpersonne = new SCpersonne();
        $SClocalite = new SClocalite();
        
        $personneValide = true;
        $localiteValide = true;
        
        // Vérifie l'existance d'un animal
        $unAnimalValide = $SCanimal->lister(new Animal($historique->getAnimal_id(), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
        if($unAnimalValide['0']){
            //Vérifier l'existance de la cause
            $uneCauseValide = $SCcause->lister(new Cause($historique->getCause_nom(), null));
            if($uneCauseValide['0']){
                
                // Si une personne est entrée, véfirier son existance
                if($historique->getPersonne_id() != null){
                    $unePersonneValide = $SCpersonne->lister(new Personne($historique->getPersonne_id(), null, null, null, null, null, null, null, null, null));
                    if (!isset($unePersonneValide))
                            $personneValide = false;
                }
                
                // Si une localité est entrée, véfirier son existance
                if($historique->getLocalite_npa() != null){
                    $uneLocaliteValide = $SClocalite->lister(new Localite($historique->getLocalite_npa(), null, null, null));
                    if (!isset($uneLocaliteValide))
                            $localiteValide = false;
                }
                
                if($personneValide && $localiteValide)
                    $unHistoriqueMemorise = $SChistorique->ajouter($historique); 
            }
        }
        return $unHistoriqueMemorise; 
    }
    
    /**
     * Service fonctionnel permettant de supprimer un historique
     * @param DateTime Date de l'historique
     * @param int identifiant de l'animal concerné
     * @return Boolean true si l'historique a été supprimé, false sinon.
     */
    public function supprimer($dateHistorique, $animal_id) {
        $SChistorique = new SChistorique();
        $unHistoriqueSupprime = null;
        // Vérifie l'existance de la remarque
        $unHistoriqueExistant = $SChistorique->lister(new Historique($dateHistorique, null, null, null, $animal_id, null));
        if($unHistoriqueExistant['0']){
            $unHistoriqueExistant = $SChistorique->supprimer($unHistoriqueExistant['0']->getDateHeure(), $unHistoriqueExistant['0']->getAnimal_id());
        }
        return $unHistoriqueSupprime;
    }
    
    /**
     * Methode permettant de lister un/des historiques
     * @param Historique $historique
     * @return array tableau des Historiques
     */
    public function lister(Historique $historique){
       
        $desHistoriques = null;
        
       $SChistorique = new SChistorique();
       if($historique!=null)
            $desHistoriques = $SChistorique->lister($historique);
        
        return $desHistoriques;
        
    }
 
}

?>
